package com.WangNan.mall.filter;

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 * @Description:
 * @Author :W.
 * @Date:2025/5/16 9:37
 */

@Slf4j
public class AuthFilter implements Filter {


    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//        用于获取请求信息
        HttpServletRequest req = (HttpServletRequest) request;
//        用于响应操作
        HttpServletResponse resp = (HttpServletResponse) response;

        log.debug("req.getRequestURI():{}", req.getRequestURI());

        // 放行登录请求：检查是否是管理员登录页面的请求
        if (req.getRequestURI().endsWith("/admin/login")) {
            chain.doFilter(request, response); //放行
            return;   //结束当前过滤器处理
        }

        // 获取当前会话（如果不存在会自动创建新会话）
        HttpSession session = req.getSession();

        // 检查session中是否存在"manager"属性（表示管理员登录状态）
        if (session.getAttribute("manager") == null) {
            // 未登录：重定向到登录页面
            resp.sendRedirect("/admin/login");
            return;   // 确保不再执行后续流程
        }
        chain.doFilter(request, response); //已登录，放行请求到目标资源
    }

}
